Computer systems typically comprise a combination of computer programs and hardware, such as semiconductors, transistors, chips, and circuit boards. The hardware within a computer system is typically organized into components, such as processors, storage devices, and I/O (Input/Output) devices. These components typically communicate with each other via another component called a bus.
Buses may be parallel buses, which carry data words or multiple bits in parallel on multiple wires, or serial buses, which carry data in bit-serial form. A bus may be point-to-point, meaning that the bus connects only two components, or multi-drop, meaning that more than two components are connected to the bus. One example of a computer bus is called PCI EXPRESS (PERIPHERAL COMPONENT INTERCONNECT EXPRESS), which uses a network of point-to-point serial links. PCI EXPRESS devices communicate via a logical connection called an interconnect or link. A link is a point-to-point communication channel between two PCI EXPRESS endpoints, allowing both to send/receive ordinary PCI-requests (e.g., configuration read/writes, I/O read/writes, and memory read/writes) and interrupts.
Endpoints may be assigned, owned, or locked by a logical partition (LPAR) or shared among multiple LPARs. An LPAR is a division of a computer's processors, memory, and storage into multiple sets of resources so that each set of resources may be operated independently with its own operating system instance and applications. Often, LPARs are used for different purposes such as database operation, client/server operation, to separate test and production environments, or the like. Each LPAR may communicate with other LPARs as if the other LPAR were a separate machine. Some resources may be shared amongst the LPARs. One such resource that may be shared is an I/O adapter using a technique called I/O virtualization.